package swing;
import javax.swing.*;
import java.awt.*;

/**
 * 1:在Swing中显示文本或提示信息的方法是使用标签，它支持文本字符串和图标
 * 重点是标签含有文本字符串和图标
 *
 * 2:标签可以显示一行只读文本，一个图像或带图像的文本，它并不能产生任何类型的事件
 * 只是简单的显示文本和图片，但是可以使用标签的特性指定标签上文本的对齐方式
 * 重点是只是简单的显示文本和图片
 *
 * 3:JLabel标签的构造方法，带图标，并且设置图标水平对齐方式，带文字，并设置文字的水平对齐方式
 * 带图标带文字，并且设定标签内容的水平对其方式
 *
 * 4:Swing上面的图标可以放置在按钮，标签，等组件上面，用于描述组件的用途
 *
 * 5:Swing中通过Icon接口来实现创建图表，可以在创建时给定图标的大小，颜色等特性
 * 如果使用Icon接口，必须实现Icon的三个接口
 *
 *
 */
public class Demo7 implements Icon{//实现Icon的接口，必须实现Icon的三个方法

    private int width;//声明图标的宽
    private int height;//声明图标的长
    //定义构造方法
    public Demo7(int width,int height){
        this.width=width;
        this.height=height;
    }
    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        // TODO Auto-generated method stub
        g.fillOval(x,y,width,height);
        //此处的学习难点在Graphics那一章节。
    }

    @Override
    public int getIconWidth() {//实现getIconWidth()方法
        // TODO Auto-generated method stub
        return this.width;
    }

    @Override
    public int getIconHeight() {//实现getIconHeight()方法
        // TODO Auto-generated method stub
        return this.height;
    }

    public static void main(String[] args) {
        Demo7 icon=new Demo7(10,10);//初始化并且向构造方法传值
        //创建一个标签，并设置标签上的文字在标签正中间
        JLabel jl=new JLabel("测试",icon,SwingConstants.CENTER);


        JFrame jf=new JFrame();//创建一个JFrame窗口
        Container container=jf.getContentPane();//将窗口转换为容器
        container.setBackground(Color.pink);

        container.add(jl);
        //设置容器的外部属性
        jf.setTitle("标签的使用，创建图标");
        jf.setVisible(true);
        jf.setSize(340,400);
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

}